package edu.ort.services

import edu.ort.domain.Gasto

class ChartGeneratorService {

    static transactional = true

    // Genera un link a Pie Chart de google
    // y lo devuelve como String
    def generatePieChartCategoria(fechaIni,fechaFin) {

        def resultado = Gasto.executeQuery("Select c.nombre, sum(g.monto) as monto from Gasto g, Categoria c where g.categoria = c.id " + 
            " and (((year(g.fecha)*100+month(g.fecha))*100)+day(g.fecha)) >= (((year(:fechaDesde)*100+month(:fechaDesde))*100)+day(:fechaDesde)) " +
            " and (((year(g.fecha)*100+month(g.fecha))*100)+day(g.fecha)) <= (((year(:fechaHasta)*100+month(:fechaHasta))*100)+day(:fechaHasta)) " +
            " group by c.nombre", [fechaDesde: fechaIni, fechaHasta: fechaFin])

        if (resultado.size > 0){
            def stringMontos = Math.round(resultado[0][1]) + ""
            def escala = Math.round(resultado[0][1])
            def stringEtiquetasMontos = Math.round(resultado[0][1]) + ""
            def stringEtiquetas = resultado[0][0]
            def i = 1
            def par = null
            while (i < resultado.size) {
                par = resultado[i]
                stringMontos= stringMontos + "," + Math.round(par[1])
                stringEtiquetasMontos = stringEtiquetasMontos + "|" + Math.round(par[1])
                stringEtiquetas = stringEtiquetas + "|" + par[0]
                escala += Math.round(par[1])
                i++
            }
            return "http://chart.apis.google.com/chart?cht=p3&chco=CC0000&chd=t:" + 
                stringMontos + "&chds=0,"+escala+"&chs=700x300&chdl="+ stringEtiquetas + "&chl="+ stringEtiquetasMontos
        }

        "http://chart.apis.google.com/chart?cht=p3&chd=t:100&chs=250x100&chl=SinDatos"
        
    }
}
